#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QSqlRecord>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    model = new QSqlTableModel(this);
    model->setTable("student");
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
    model->select(); //选取整个表的所有行

   ui->tableView->setModel(model);//显示到tableview
}

MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::on_pushButton_clicked()
{
    model->database().transaction(); //开始修改操作
        if (model->submitAll()) {
           model->database().commit(); //提交
        } else {
           model->database().rollback(); //撤销

        }
}

void MainWindow::on_pushButton_2_clicked()
{
    model->revertAll();
}

void MainWindow::on_pushButton_3_clicked()
{
    int rowNum = model->rowCount(); //获得表的行数
        int number = 100;
        model->insertRow(rowNum); //添加一行
        model->setData(model->index(rowNum,0),number);
        model->submitAll();
          model->database().commit();//提交
}

void MainWindow::on_pushButton_4_clicked()
{

       int curRow = ui->tableView->currentIndex().row();//获取选中的行


       model->removeRow(curRow);//删除该行

       int ok = QMessageBox::warning(this,tr("删除当前行!"),tr("你确定""删除当前行吗？"),QMessageBox::Yes,QMessageBox::No);
       if(ok == QMessageBox::No)
       {
          model->revertAll(); //如果不删除，则撤销
       }
       else model->submitAll(); //否则提交，在数据库中删除该行
}
int pan(QString src) //判断查找的文本类型
{
    QByteArray ba = src.toLatin1();//QString 转换为 char*
     const char *s = ba.data();

    while(*s && *s>='0' && *s<='9') s++;

    if (*s)
    { //不是纯数字
        return 0;
    }
    else
    { //纯数字
        return 1;
    }
}
void MainWindow::on_pushButton_5_clicked()
{
    QString name =ui->lineEdit->text();


    int id=ui->lineEdit->text().toInt();
    if(pan(name))
    {model->setFilter(QObject::tr("id = '%1'").arg(id));

        model->select();//显示结果
        ui->lineEdit->clear();}
    else


    {
        if(name.isEmpty())
        return;

    else
    {
    model->setFilter(QObject::tr("name = '%1'").arg(name));

    model->select();//显示结果
    ui->lineEdit->clear();
        }
    }
}

void MainWindow::on_pushButton_6_clicked()
{
        model->setTable("student");   //重新关联表
        model->select();   //显示整个表
}

void MainWindow::on_pushButton_7_clicked()
{
        model->setSort(1, Qt::AscendingOrder); //id属性即第1列，升序排列
        model->select();
}

void MainWindow::on_pushButton_8_clicked()
{
        model->setSort(1, Qt::DescendingOrder);//id属性，降序排列
        model->select();
}

void MainWindow::on_tableView_clicked(const QModelIndex &index)//将tableview中选中行输出到textbrowser中显示
{
    QSqlRecord record = model->record(index.row());//获取选中行
    int stuId = record.value("id").toInt();
    QString name = record.value("name").toString();
    QString lesson = record.value("lesson").toString();
    QString data = record.value("data").toString();
    QString type= record.value("type").toString();

 ui->textBrowser->setText(tr(" 学号：%1\n 姓名：%2\n 缺课课程：%3\n 缺课日期：%4\n 缺课类型：%5\n ").arg(stuId).arg(name).arg(lesson).arg(data).arg(type));
}

void MainWindow::on_pushButton_9_clicked()//关闭窗口
{
     close();
}
